package io.adrainty.bolee.insurance.models.bo;

import com.baomidou.mybatisplus.annotation.TableName;
import io.adrainty.bolee.framework.commons.basic.BaseBO;
import io.adrainty.bolee.framework.commons.basic.EnableEnum;
import io.adrainty.bolee.insurance.models.valobj.CheckRuleEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.math.BigDecimal;

/**
 * <p>InsuranceBO</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description 保险
 * @since 2025/8/12 10:33:04
 */

@Data
@Schema(description = "保险")
@EqualsAndHashCode(callSuper = true)
@TableName("tab_insurance")
public class InsuranceBO extends BaseBO {

    @Serial
    private static final long serialVersionUID = 4422209651126109137L;

    @Schema(description = "银保监备案号")
    private String publishNumber;

    @Schema(description = "保险分类编号")
    private String categoryNo;

    @Schema(description = "推荐保险分类编号")
    private String recommendCategoryNo;

    @Schema(description = "保险名称")
    private String insuranceName;

    @Schema(description = "金选保险")
    private String goldSelection;

    @Schema(description = "安心赔")
    private String carefree;

    @Schema(description = "热点标识")
    private String showIndex;

    @Schema(description = "保险标识")
    private String labelsJson;

    @Schema(description = "补充说明")
    private String remakeJson;

    @Schema(description = "可购买起始点")
    private Long timeStart;

    @Schema(description = "可购买起始点单位：天、年")
    private String timeStartUnit;

    @Schema(description = "可购买结束点")
    private Long timeEnd;

    @Schema(description = "可购买结束点单位：天、年")
    private String timeEndUnit;

    @Schema(description = "可投保关系：self,children:spouse,parents")
    private String relation;

    @Schema(description = "排序")
    private Integer sortNo;

    @Schema(description = "团个险（0团 1个）")
    private String multiple;

    @Schema(description = "连续投保年龄")
    private Long continuousInsuranceAge;

    @Schema(description = "校验规则：0医疗 1重疾 2意外 3养老 4储蓄 5旅游 6宠物 7定寿")
    private CheckRuleEnum checkRule;

    @Schema(description = "企业编号")
    private String companyNo;

    @Schema(description = "保险状态（上架0 下架1）")
    private String insuranceState;

    @Schema(description = "保单宽限")
    private Integer grace;

    @Schema(description = "宽限单位")
    private String graceUnit;

    @Schema(description = "保单复效")
    private Integer revival;

    @Schema(description = "复效单位")
    private String revivalUnit;

    @Schema(description = "产品点评")
    private String comment;

    @Schema(description = "产品描述")
    private String remake;

    @Schema(description = "犹豫期")
    private Integer hesitation;

    @Schema(description = "等待期")
    private Integer waits;

    @Schema(description = "运营费率")
    private BigDecimal operatingRate;

    @Schema(description = "个人代理费率")
    private BigDecimal individualAgentRate;

    @Schema(description = "收益年利率")
    private BigDecimal platformAgentRate;

    @Schema(description = "数据状态：0正常 1禁用")
    private EnableEnum dataState;

}
